昨天我們介紹了關於 Stable Diffusion 的內容(後面簡稱SD),今天我們從安裝開始,一步步手把手示範如何使用SD,內容包含:前置準備、環境選定、及SD的安裝。
我們先看下自有的電腦配置,目前可建置的參考網址,這是一個構建stable-diffusion-webui的網站,安裝好後可以有 UI 的網頁畫面供操作,要注意的是要用哪種運算資源做 AI 生圖,目前支援:NVIDIA 的 GPU、AMD 的 GPU、及 Intel 的 CPU,建議是用NVIDIA 的 GPU,按照之前的使用經驗,在跑生圖的時候,vram至少要6G以上才會比較穩,但如果是要訓練 ckpt 或 safetensors 那些的話,建議是10G以上,不然跑不動,雖然它有提供降低 vram 附載的參數,但如果資源不夠的時候還是有機會掛掉,另外它也有支援純 CPU 運行的模式,但這部分筆者就沒試了,也不建議嘗試啦,高機率會浪費時間,這邊小結一下:
筆者是用 Docker 環境下去安裝的,基礎映像使用 Ubuntu:22.04,若讀者為 Windows 的情況請參考這裡,以下會以 Docker 及 Ubuntu:22.04 的情況進行示範。
以下操作不限於Ubuntu,都是Linux based指令
test@ubuntu22:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 16
On-line CPU(s) list: 0-15
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 165
Model name: Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
test@ubuntu22:~$ lspci -nn |grep '\[03'
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD102 [GeForce RTX 4090] [10de:2684] (rev a1)
test@ubuntu22:~$ free -h
total used free shared buff/cache available
Mem: 62Gi 3.6Gi 47Gi 19Mi 11Gi 58Gi
Swap: 0B 0B 0B
相信自己可以做到,若是心不安,就買一包綠色乖乖放在測試機旁邊。
老生常談,請看以下示範,或參考這裡。
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt install nvidia-driver-525-server -y
sudo reboot
安裝完驅動一般來說會自動幫你更新kernel到最新,這是正常的。
sudo docker run --gpus '"device=0"' --network host --name test1 -it ubuntu:22.04 bash
這邊指用到了第一張GPU及映射主機網路設定與容器內同步。
# 先看能否抓到顯卡
nvidia-smi
# 安裝依賴包
apt update
apt install wget git python3 python3-venv libgl1 libglib2.0-0
# 下載UI運行腳本
wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh
chmod +x webui.sh
# 進行安裝並啟動SD
./webui.sh -f --listen
跑完後他會開在預設的端口 7860,就能直接連啦!
輸入--help可以看其他常用參數。
如果你懶得自己裝,筆者有個封裝好的可以直接用:
sudo docker run --gpus '"device=0"' --network host --name test1 -it 105552010/sd-test:v1.6.0 bash
介面會長這個樣子:
今天我們介紹了關於 SD 安裝的內容;例如,前置準備、環境選定、及SD的安裝,明天會介紹SD常用操作的內容,明天見!
版主你好,想問問SD是不是只支援單GPU使用?
我使用了ducker參數device=all
在host端同時監控nvidia-smi -l,發現SD在算圖時永遠只有1顆GPU有忙碌
想問問你會不會知道怎樣修改讓GPU載入docker時,在跑SD的時候所有gpu都活動呢?(應該全部GPU一起算會比較快速產圖?
嗨嗨,大大你好:
先說結論,以Automatic1111提供的UI環境來說,目前沒支援多GPU。
關於後續更新的消息,可以參考這裡:https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/8293
還有其他開源項目,像是StabilityAI前員工做的號稱有支援,可以參考看看,SwarmUI這套:https://github.com/Stability-AI/StableSwarmUI/blob/master/docs/Using%20More%20GPUs.md